// Vue应用主入口
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
import axios from 'axios';

// 创建Vue应用实例
const app = createApp(App);

// 配置axios
axios.defaults.baseURL = '';
axios.defaults.timeout = 10000;

// 请求拦截器 - 添加认证令牌
axios.interceptors.request.use(
  config => {
    const token = localStorage.getItem('token');
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);

// 响应拦截器 - 处理错误
axios.interceptors.response.use(
  response => {
    return response.data;
  },
  error => {
    const { response } = error;
    if (response) {
      switch (response.status) {
        case 401:
          // 未授权，清除token并跳转到登录页
          localStorage.removeItem('token');
          localStorage.removeItem('userInfo');
          router.replace('/login');
          layer.msg('请重新登录', { icon: 5 });
          break;
        case 403:
          layer.msg('没有权限访问', { icon: 5 });
          break;
        case 404:
          layer.msg('请求的资源不存在', { icon: 5 });
          break;
        case 500:
          layer.msg('服务器内部错误', { icon: 5 });
          break;
        default:
          layer.msg(response.data?.message || '请求失败', { icon: 5 });
      }
    } else {
      layer.msg('网络错误，请检查网络连接', { icon: 5 });
    }
    return Promise.reject(error);
  }
);

// 全局方法
app.config.globalProperties.$axios = axios;

// 挂载路由
app.use(router);

// 挂载应用
app.mount('#app');